package com.healthcloud.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.healthcloud.entity.Patient;
import com.healthcloud.entity.PatientCriteria;

/**
 * Created by xiam on 2015/6/17.
 */
public interface PatientService {

	/**
	 * <p>保存或更新患者基本资料, 当 id 未指定时, 表示新建, id 指定时, 表示更新</p>
	 * @param patient
	 */
	Patient saveOrUpdate(Patient patient);

	/**
	 * 根据身份证号码查找用户信息
	 * @param idCard
	 * @return
	 */
	Patient findByIdCard(String idCard);

	/**
	 * 病人档案搜索
	 * @param criteria
	 * @param pageable
	 * @return
	 */
	Page<Patient> search(PatientCriteria criteria, Pageable pageable);
	
	/**
	 * 根据身份证号、社保号、查找是否存在该病人档案
	 * @param idCard
	 * @param socialInsuranceNum
	 * @return
	 */
	boolean existsPatient(String idCard,String socialInsuranceNum);
	/**
	 * 根据医生编号，获得与医生关联的病人列表
	 * @param docId（医生编号）
	 * @return List
	 */
	List findByExam(String docId);
	
	/**
	 * 将DataTime的类型全部改变为String类型
	 * @param patient
	 */
	void DataTimeToString(Patient patient);

	Patient findByUserId(Integer userId);

	/**
	 * 根据用户id获取他家人的病人档案信息
	 * @param userId	用户id
	 * @return
	 */
	List<Patient> getFamilyPatientList(Long userId);

	/**
	 * 根据id查询患者信息
	 * @param id
	 * @return
	 */
	Patient getById(Long id);
	/**
	 * 根据id数组查询患者列表信息
	 * @param ids
	 * @return
	 * @throws IllegalArgumentException
	 */
	List<Patient> getByIds(Long[] ids) throws IllegalArgumentException;
}
